package tech.aistar.corejava.day02;

/**
 * @author success
 * @version 1.0
 * @description:本类用来演示:数据类型
 * @date 2019/7/16 0016
 */
public class DataTypeDemo {
    public static void main(String[] args) {
        byte b = 127;
        System.out.println("b:"+b);

        //需要进行强制类型转换
        //alt + enter
        b = (byte) 128;
        //-128
        System.out.println("b:"+b);

        //short类型
        //+=
        short s1 = 1;
        //大的数据类型和小的数据类型在进行计算的时候,结果是偏向类型大的一方
        s1 = (short) (s1 + 1);//编译错误
        System.out.println("s1:"+s1);

        //相当于s1 = (short)(s1+1);
        //+= 在底层会进行类型的"窄化"操作.
        s1+=1;//ok,+=在实际编码中最好不要使用. s1 = s1 + 1

        //定义一个整数
        int a = 10;

        //十进制和二进制转换
        //十进制和八进制转换
        //十进制和十六进制转换

        //二进制和八进制互相转换
        //二进制和十六进制互相转换

        //在java中数字如果是以0开头的,代表的是八进制
        //而int类型代表的是十进制的数据
        int x = 032;
        System.out.println("x:"+x);//26   八进制 - 十进制

        //长整型
        //自动类型转换 - 低字节转换成高字节
        //int - > long
        long o = 123;

        //定义长整型推荐使用的方式
        long o1 = 123L;//此处可以写成小的l

        //jdk7.0以后,遇到需要分段的数据,可以定义成
        long o2 = 1_234_567_89L;
        System.out.println("o2:"+o2);

        //int[4] - > float[4]
        int t = 123456789;
        float f = t;
        System.out.println("f:"+f);//f:1.23456792E8
        //int[4] - > double[8]

        double d = t;
        System.out.println("d:"+d);//d:1.23456789E8

        //布尔类型 - "标记位"
        boolean flag = true;
        System.out.println("flag:"+flag);
    }
}
